The present invention relates to a system and method for automatically converting source code between different environments and, more particularly, to a conversion engine that automatically converts source code between, for example, different operating systems and development tools, and from one software language to another.
Recent years have seen major changes in the information systems of many corporations and business organizations. Advances in both computer hardware and software systems have created a growing problem of information system obsolesce.
The technological development of hardware has led to the development of new processors with more powerful performance levels, while prices have fallen. The technology of miniaturization of electronic components has led to developments in peripheral computer equipment. Finally, mainframe and mini computers are being replaced by personal computers. Changes in hardware have been accompanied by parallel changes in software. Programs have been developed making use of the new capabilities of the hardware, in order to meet the demands of users for more efficient and powerful computer performance.
These developments have furthered the changing role of the computer, A computer is now a popular consumer product that is used for many different applications containing various new types of data.
Microsoft Corporation of Redmond Wash., USA, whose products have captured a large majority of the market share in personal computer products worldwide, has played a major role in Influencing the direction of development of new computer products, Microsoft Corporation has been able to influence general trends in software development and even to invent new standards that have been recognized by most software developers.
Microsoft Corporation has developed a middleware-based solution known as Universal Data Access. The goal of Universal Data Access is to ensure open, integrated, standards-based access to all types of data across a wide variety of applications. Types of data include not only relational database data but also, for example, unstructured data including non-traditional data such as html tables. Types of applications include client/server and Web-based, among others.
A high-level interface to this Microsoft Corporation architecture is ActiveX Data Object (ADO); lower-level interfaces are ODBC and OLE DB (all from Microsoft Corporation). Commercial products exist which supply the service and data providers necessary to use this technology. This architecture provides the ability to transfer data between applications by providing standardized interfaces for all types of data. This maximizes interoperability and reusability, while leaving the data in its source application.
One result of the computer environment changes has been the need for companies to upgrade their hardware and software to make use of the latest technologies. In light of this changing environment, many business organizations have found that their existing information technologies are not compatible with each other due to a lack of standard tools and to software written using various development tools. This increases the maintenance costs of those systems and makes setting standards in the organization difficult.
Furthermore, upgrading and converting the systems into new working platforms often requires redevelopment of the organization""s computer systems to make them compatible with the new working environment. The process of re-writing the programs takes a lot of time and can delay the natural growth of the organization. It can also mean special deployment in the organization and added expense.
Therefore, a fully automatic system and method for converting source code is needed to assist these organizations in converting their software between different software languages and development platforms. Until now, there has been no successful solution to this problem.
There is provided in accordance with a preferred embodiment of the present invention, a method for automatically converting source code from a first software language and platform to a second software language and platform. The method includes the steps of separating the source code of the first software language and platform into at least one element in at least one table, optimizing the element producing at least one optimized element, and rewriting the source code in the second software language and platform from the optimized element.
Moreover, in accordance with a preferred embodiment of the present invention, the method further includes the step of automatically creating environment files from information about the platform.
Further, in accordance with a preferred embodiment of the present invention, the step of separating includes the steps of recognizing a line keyword for each of the code lines of the source code, finding keywords in each of the respective code lines relating to the line keywords, determining the properties of the keywords, and creating the element from the properties of the keywords.
Additionally, in accordance with a preferred embodiment of the present invention, the step of optimizing includes the step of analyzing and converting the data encapsulated in the element to produce generic data.
Still further, in accordance with a preferred embodiment of the present invention, the step of analyzing and converting includes the step of defining different module types.
Moreover, in accordance with a preferred embodiment of the present invention, the step of analyzing and converting further includes the step of updating the element.
Additionally, in accordance with a preferred embodiment of the present invention, the step of analyzing and converting further includes the step of separating database code from other application code.
Furthermore, in accordance with a preferred embodiment of the present invention, the step of analyzing and converting further includes the step of defining the data flow within the source code.
Still further, in accordance with a preferred embodiment of the present invention, the step of analyzing and converting further includes the step of defining events.
Moreover, in accordance with a preferred embodiment of the present invention, the step of analyzing and converting further includes the step of recommending the creation of stored procedures from a specified section of the second software language.
Additionally, in accordance with a preferred embodiment of the present invention, the step of analyzing and converting further includes the step of converting the graphical user interface (GUI) to a recognized standard GUI.
Furthermore, in accordance with a preferred embodiment of the present invention, the step of analyzing and converting further includes the step of defining internal connections.
Still further, in accordance with a preferred embodiment of the present invention, the step of analyzing and converting further includes the step of defining the inheritance of properties.
Moreover, in accordance with a preferred embodiment of the present invention, the method further includes the step of externally driven optimization. The externally driven optimization step includes the steps of performing global changes of names and performing changes to a graphical user interface.
There is further provided in accordance with a preferred embodiment of the present invention, a method for the automatic generation of a generic database. The method includes the steps of separating the source code of a first software language and platform into at least one element in at least one table and optimizing the element, producing at least one optimized element.
There is still further provided in accordance with a preferred embodiment of the present invention, a system for automatically converting source code from a first software language and platform to a second software language and platform. The system includes a source-code analyzer and deconstructor for separating the source code of the first software language and platform into at least one element in at least one table, an optimizer for optimizing the element producing at least one optimized element, and a code generator for rewriting the source code in the second software language and platform from the optimized element.
Additionally, in accordance with a preferred embodiment of the present invention, the system further includes a unit for automatically creating environment files from information about the platform.
Furthermore, in accordance with a preferred embodiment of the present invention, the system further includes an external optimizer including a graphics conversion unit for converting the GUI to a recognized standard GUI.
Moreover, in accordance with a preferred embodiment of the present invention, the graphics conversion unit includes a unit for performing global changes of names and a unit for performing changes to a GUI.
There is still further provided in accordance with a preferred embodiment of the present invention, a system for the automatic generation of a generic database. The system includes a source-code analyzer and deconstructor for separating the source code of a first software language and platform into at least one element in at least one table, and an optimizer for optimizing the element producing at least one optimized element.